fix(shell-ball): listen for runtime task notifications#369
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
@xgopilot 解决你提到的问题 |
ResultFixed the race I called out in review by changing shell-ball runtime observation handling from per-task late subscription to a global runtime subscription with task-scoped buffering and replay. What Changed
Validation
The desktop workspace in this runner does not have Git
|
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: gdemonc <146809967+gdemonc@users.noreply.github.com>
|
@xgopilot 还有什么问题 |
ReviewNo additional issues found in the updated patch. I re-checked the change against I did not rerun the desktop checks in this runner. |
Summary
task.steeredand selectedloop.*events can surface in the floating bubble flowtask.updated, whiletask.steered,loop.retrying, andloop.failedrender as lightweight local status bubblesChanges
apps/desktop/src/features/shell-ball/useShellBallCoordinator.tstask.steeredloop.retryingloop.failedsubscribeTaskRuntime(...)Testing
pnpm --dir apps/desktop typecheckpnpm --dir apps/desktop lintnode -r ./scripts/registerShellBallTestAliases.cjs --test --test-name-pattern "runtime observation helper|coordinator subscribes to formal task, approval, and runtime updates" .cache/shell-ball-tests/features/shell-ball/shellBall.contract.test.jsgo test ./services/local-service/internal/rpc -run "HandleStreamConn(EmitsLoopLifecycleNotifications|FiltersRuntimeNotificationsToRequestTask)"go test ./services/local-service/internal/rpc -run "HandleStreamConnStreamsLoopLifecycleNotificationsBeforeResponseForSubmitInput"go test ./services/local-service/internal/runengine -run "(EmitRuntimeNotificationPersistsLoopStopReason|ContinueTaskMergesContinuationStateAndDrainsSteeringMessages)"go test ./services/local-service/internal/orchestrator -run "TaskSteerPersistsFollowUpMessage"Notes
pnpm --dir apps/desktop test:shell-ballstill has unrelated pre-existing baseline failures, so validation here uses targeted contract coverage plus backend notification tests